package io.mft.dev.base;

import io.mft.commons.function.ExecuteReturn;
import io.mft.commons.function.RequestValue;
import io.mft.commons.function.response.kv.KVMap;
import io.mft.plugin.PluginInvoker;
import io.mft.plugin.PluginResponse;

/**
 * MQ消息发布
 * @说明：TODO
 * @类型名称：MQMessageProducer
 * @创建者: 胡常建  
 * @创建时间: 2021年4月26日 下午5:07:09
 * @修改者: 胡常建  
 * @修改时间: 2021年4月26日 下午5:07:09
 */
public class MQMessageProducer {
	public enum MQProducerType{
		rabbitmq,kafka
}
	/**
	 * 发布消息
	 * @说明: TODO
	 * @方法名称: publish
	 * @参数 @param datasourceId
	 * @参数 @param exchangeId
	 * @参数 @param message
	 * @返回类型 void    
	 * @创建者: 胡常建  
	 * @创建时间: 2021年4月26日 下午5:12:01
	 * @修改者: 胡常建  
	 * @修改时间: 2021年4月26日 下午5:12:01
	 */
	public static ExecuteReturn publish(MQProducerType mqProducerType,String exchangeId,KVMap message) {
		RequestValue requestValue=new RequestValue();
		requestValue.set("exchangeId", exchangeId);
		requestValue.set("message", message);
		requestValue.set("mqProducerType", mqProducerType.name());
		PluginResponse response=PluginInvoker.invoke("MQMessageProducer.publish", requestValue);
		ExecuteReturn executeReturn=ExecuteReturn.builder().code(response.getErrorNo()).message(response.getErrorInfo()).build();
		return executeReturn;
	}
}
